#ifndef TABLEROTABLERO_H
#define TABLEROTABLERO_H

#define MOVS_POR_ANGULO 10

#include "imapa.h"
#include "mapaesferico.h"
#include "mapaplano.h"
#include "texturadefondo.h"
#include "ciudades.h"
#include "Mapa.h"

#include <GL/gl.h>
#include <GL/glu.h>
#include <gtkmm.h>
#include <gtkglmm.h>

using namespace ui::tablero::mapa;
using namespace Gtk::GL;

namespace ui {
namespace tablero {

typedef enum tipo_mapa_e {
	MAPA_ESFERICO,
	MAPA_PLANO
} tipo_mapa_e;

class Tablero: public DrawingArea {

public:

    Tablero(const Glib::RefPtr<const Gdk::GL::Config>& p_Config, Mapa &mapa);
    ~Tablero();

	void cambiarMapa(tipo_mapa_e p_eTipoMapa);
	IMapa *getMapa();
	void invalidate();
	virtual bool on_key_press_event(GdkEventKey *event);
	tipo_mapa_e get_tipo_mapa();
	bool getTerritorioSeleccionado(string &territorio, string &continente);
	
private:
	
	Mapa &modelo;
	
	bool m_bSalir;
	IMapa *m_pMapa;
	MapaEsferico m_MapaEsferico;
	MapaPlano m_MapaPlano;
	tipo_mapa_e m_eTipoMapa;
	TexturaDeFondo m_TexturaDeFondo;
	Ciudades m_Ciudades;

	virtual void on_realize();
	virtual bool on_configure_event(GdkEventConfigure *event);
	virtual bool on_expose_event(GdkEventExpose *event);
  	virtual bool on_button_press_event(GdkEventButton *event);  	
};

}
}

#endif
